package br.com.conhecimento.core.model;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;

@Entity
@Table(name="tb_usuario")
public class GestaoUsuario implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	@Column(name="id")
	private Integer id;
	
	@ManyToOne
	@JoinColumn(name="id_tipo_usuario", referencedColumnName="id")
	private GestaoTipoUsuario tipoUsuario;
	
	@Column(name="nome")
	private String nome;
	
	@Column(name="email")
	private String email;
	
	@Column(name="login")
	private String login;
	
	@Column(name="senha")
	private String senha;
	
	@Column(name="ativo")
	private Boolean ativo;
	
	@Column(name="celular")
	private String celular;

    @Column(name="telefone")
	private String telefone;

    @Column(name="contador_login")
	private Integer contadorLogin;

    @Column(name="data_ultimo_login")
	private Timestamp dataUltimoLogin;
    
    @ManyToMany
	@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE})
	@JoinColumn(name="id_cliente", referencedColumnName="id")
	private List<GestaoCliente> clientes;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public Boolean getAtivo() {
		return ativo;
	}

	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}

	public GestaoTipoUsuario getTipoUsuario() {
		return tipoUsuario;
	}

	public void setTipoUsuario(GestaoTipoUsuario tipoUsuario) {
		this.tipoUsuario = tipoUsuario;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public Integer getContadorLogin() {
		return contadorLogin;
	}

	public void setContadorLogin(Integer contadorLogin) {
		this.contadorLogin = contadorLogin;
	}

	public Timestamp getDataUltimoLogin() {
		return dataUltimoLogin;
	}

	public void setDataUltimoLogin(Timestamp dataUltimoLogin) {
		this.dataUltimoLogin = dataUltimoLogin;
	}

	public List<GestaoCliente> getClientes() {
		return clientes;
	}

	public void setClientes(List<GestaoCliente> clientes) {
		this.clientes = clientes;
	}
	
}
